As data storage devices become available in increasingly large capacities, managing the performance and management of the data storage becomes increasingly difficult. With very large capacity data storage, simply accessing the information (storing and retrieving data) can become more complicated and less efficient. In part, this difficulty may be viewed as presenting a hardware issue that might be addressed by developing the most efficient access circuitry and physical layout of the data storage components as possible. In addition, however, the problem could also be viewed as a software issue that might be addressed by enhancing the organization and management of the data stored in the data storage device.
Computer software has also followed a similar trend of increasing size and complexity. As the software complexity and size increases so does the difficulty in creating, modifying, and maintaining the software. In an attempt to address these issues, the field of software engineering has proposed more efficient software development models. In particular, object-oriented programming has emerged as a software schema that can speed the development of new programs and, if properly used, may improve the maintenance, reusability, and modifiability of software.
When object-oriented programming first arrived, it was viewed as a rather revolutionary concept that changed the rules in computer program development. Object-oriented programming is organized around “objects” rather than “actions,” data rather than logic. Historically, a program has been viewed as a logical procedure that takes input data, processes it, and produces output data. The programming challenge was seen as how to write the logic, not how to define the data. In object-oriented programming, the emphasis is on the objects to be manipulated rather than the logic required to manipulate them.
In general, object-oriented programming is understood in the art as a type of programming in which programmers focus on data as opposed to the actions or logic of the program being developed. The programmers can define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. In this way, the data structure becomes an object that includes both data and functions. In addition, programmers can create relationships between one object and another. For example, objects can inherit characteristics from other objects.
Given that similar issues of complexity and size are currently being faced in the world of data storage, it would be desirable to apply some of the precepts of the object-oriented paradigm to the emerging issue of balancing performance and management of data storage devices having ever-increasing capacity.